#include <iostream>
#include <cstring>
using namespace std;

class Point
{
public:
    int x;
    // Point(int x) : x { x }
    // explicit 关键字
    // 它表明：这个转换只能用于显式转换，不能用于隐式转换
    explicit Point(int x) : x{x}
    {
    }
};
void fn(Point p)
{
    cout << p.x << endl;
}

int main()
{
    // 此处会调用构造函数隐式类型转换
    // fn(1);
    // 使用explicit修饰后只能显示的类型转换
    fn((Point)1);
}
